const { app, BrowserWindow, ipcMain } = require('electron');
const path = require('path');
const server = require('./server');

// 解析命令行参数
const args = process.argv.slice(2);

// 解析外部传入的参数
let mode = '';
let id = '';

// 方法1：直接从args获取
if (args.length >= 1) {
    mode = args[0] || '';
}
if (args.length >= 2) {
    id = args[1] || '';
}

// 方法2：如果args中没有找到模式参数，检查process.argv中是否有
if (mode !== 'www' && mode !== 'test') {
    for (let i = 0; i < process.argv.length; i++) {
        if (process.argv[i] === 'www' || process.argv[i] === 'test') {
            mode = process.argv[i];
            // 如果找到了模式参数，下一个参数可能是ID
            if (i + 1 < process.argv.length && process.argv[i + 1] !== 'www' && process.argv[i + 1] !== 'test') {
                id = process.argv[i + 1];
            }
            break;
        }
    }
}

// 保持对窗口对象的全局引用
let mainWindow;

function createWindow() {
  // 创建浏览器窗口
  mainWindow = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      nodeIntegration: true,
      contextIsolation: false,
      enableRemoteModule: true
    }
  });

  // 构建URL并加载页面
  let url = 'http://localhost:3000/index.html';
  if (mode) {
    url += `?mode=${mode}`;
    if (id) url += `&id=${encodeURIComponent(id)}`;
  }
  
  mainWindow.loadURL(url);

  // 打开开发者工具（调试用）
  mainWindow.webContents.openDevTools();

  // 当窗口被关闭时触发
  mainWindow.on('closed', function () {
    mainWindow = null;
  });
}

// 添加IPC通信处理
ipcMain.handle('app-quit', (event, errorInfo) => {
  if (errorInfo && errorInfo.error) {
    console.error('❌ 发生异常，错误信息:', errorInfo.error);
    console.error('❌ 错误堆栈:', errorInfo.stack);
    console.error('❌ 错误时间:', errorInfo.timestamp);
  } else {
    console.log('收到前端退出请求，正在退出应用...');
  }
  app.quit();
});

// 添加渲染完成通知
ipcMain.handle('render-complete', (event, data) => {
  console.log('✅ 渲染完成通知:', data);
  // 延迟退出，让用户看到结果
  setTimeout(() => {
    console.log('渲染完成，准备退出应用...');
    app.quit();
  }, 3000);
});

// 当Electron完成初始化并准备创建浏览器窗口时调用此方法
app.whenReady().then(createWindow);

// 当所有窗口都被关闭时退出应用
app.on('window-all-closed', function () {
  // 在macOS上，除非用户用Cmd + Q确定地退出，否则绝大部分应用及其菜单栏会保持激活
  if (process.platform !== 'darwin') {
    app.quit();
  }
});

app.on('activate', function () {
  // 在macOS上，当单击dock图标并且没有其他窗口打开时，通常在应用程序中重新创建窗口
  if (BrowserWindow.getAllWindows().length === 0) {
    createWindow();
  }
});
